决策树VS随机森林 |
您所在的位置:网站首页 › fifa14ios 好用的随机球员 › 决策树VS随机森林 |
用一个简单的比喻来解释决策树 vs 随机森林让我们从一个思维实验来阐述决策树和随机森林之间的差异。假设一个银行要给一位顾客批准一笔小额贷款,银行需要迅速做出决策。银行检查了这位顾客的信用记录和他的财政状况,并发现他还没有还上之前的贷款。因此,银行拒绝了他的申请。但是,这笔贷款跟银行所拥有的巨额资金相比实在是小的可怜,银行本可以轻易地批准这笔贷款并且也不会承担很多风险。于是,银行失去了一次赚钱的机会。现在,银行又来了一个贷款申请,但是这次银行想出了一种不同的策略——多重决策过程。有时它会先检查信用历史,有时它会先检查顾客的财政状况和贷款额度。然后,银行会把这些多重决策过程的结果进行整合,并最终决定是否将贷款发放给顾客。即使这个过程比之前更费时,但是银行依然能够通过此途径获利。这是一个基于单一决策过程进行集合决策的经典案例。现在,我的问题来了——你知道这两个过程表征的是什么吗? 决策树简介 随机森林概览 随机森林和决策树的冲突(代码) 为什么随机森林优于决策树? 决策树vs随机森林——你应该在何时选择何种算法? 决策树简介决策树是一种有监督的机器学习算法,该方法可以用于解决分类和回归问题。决策树可以简单地理解为达到某一特定结果的一系列决策。这里是一幅决策树的阐述图(使用我们上面的案例):基于树的算法:从零开始的完整教程(R & Python) https://www.analyticsvidhya.com/blog/2016/04/tree-based-algorithms-complete-tutorial-scratch-in-python/?utm_source=blog&utm_medium=decision-tree-vs-random-forest-algorithm 从决策树开始(免费课程) https://courses.analyticsvidhya.com/courses/getting-started-with-decision-trees?utm_source=blog&utm_medium=decision-tree-vs-random-forest-algorithm 注:本文的想法是比较决策树和随机森林。因此,我不会详细解释基本概念,但是我将提供相关链接以便于你可以进一步探究。 随机森林概览决策树算法很容易理解和解释。但是通常来说,一棵简单的树并不能产生有效的结果。这就是随机森林算法的用武之地。从零开始构建一个随机森林&理解真实世界的数据产品 https://www.analyticsvidhya.com/blog/2018/12/building-a-random-forest-from-scratch-understanding-real-world-data-products-ml-for-programmers-part-3/?utm_source=blog&utm_medium=decision-tree-vs-random-forest-algorithm 随机森林超参数调优——一个初学者的指南 https://www.analyticsvidhya.com/blog/2020/03/beginners-guide-random-forest-hyperparameter-tuning/?utm_source=blog&utm_medium=decision-tree-vs-random-forest-algorithm 集成学习的综合指南(使用Python代码) https://www.analyticsvidhya.com/blog/2018/06/comprehensive-guide-for-ensemble-models/?utm_source=blog&utm_medium=decision-tree-vs-random-forest-algorithm 如何在机器学习中建立集成模型?( R代码) https://www.analyticsvidhya.com/blog/2017/02/introduction-to-ensembling-along-with-implementation-in-r/?utm_source=blog&utm_medium=decision-tree-vs-random-forest-algorithm现在的问题是,我们怎样选择决策树和随机森林算法呢?让我们在做出结论之前,先看看过两种算法的具体情况。随机森林和决策树的冲突(代码)本部分,我们将使用Python实现决策树和随机森林算法来解决一道二分类问题。我们接下来将会比较它们的结果并看一看那种更适合解决我们的问题。 我们将基于Analytics Vidhya’s DataHack(https://datahack.analyticsvidhya.com/contest/practice-problem-loan-prediction-iii/?utm_source=blog&utm_medium=decision-tree-vs-random-forest-algorithm)平台的贷款预测数据集进行分析。这是一个二分类问题,我们需要基于特定的特征集来决定一个人是否可被批准获得贷款。注:你可以去DataHack(https://datahack.analyticsvidhya.com/contest/all/?utm_source=blog&utm_medium=decision-tree-vs-random-forest-algorithm )平台并在不同在线机器学习竞赛中与他人竞争,并且有机会获得令人兴奋的奖品。 准备好编程了吗?第一步:加载库和数据集让我们从导入所需的Python库和我们的数据集开始:https://www.analyticsvidhya.com/blog/2016/07/practical-guide-data-preprocessing-python-scikit-learn/?utm_source=blog&utm_medium=decision-tree-vs-random-forest-algorithm # Data Preprocessing and null values imputation # Label Encoding df['Gender']=df['Gender'].map({'Male':1,'Female':0}) df['Married']=df['Married'].map({'Yes':1,'No':0}) df['Education']=df['Education'].map({'Graduate':1,'Not Graduate':0}) df['Dependents'].replace('3+',3,inplace=True) df['Self_Employed']=df['Self_Employed'].map({'Yes':1,'No':0}) df['Property_Area']=df['Property_Area'].map({'Semiurban':1,'Urban':2,'Rural':3}) df['Loan_Status']=df['Loan_Status'].map({'Y':1,'N':0}) #Null Value Imputation rev_null=['Gender','Married','Dependents','Self_Employed','Credit_History','LoanAmount','Loan_Amount_Term'] df[rev_null]=df[rev_null].replace({np.nan:df['Gender'].mode(), np.nan:df['Married'].mode(), np.nan:df['Dependents'].mode(), np.nan:df['Self_Employed'].mode(), np.nan:df['Credit_History'].mode(), np.nan:df['LoanAmount'].mean(), np.nan:df['Loan_Amount_Term'].mean()})rfc_vs_dt-2.py hosted with ❤ by GitHub第三步:创造训练集和测试集 现在,让我们以80:20的比例进行训练集和测试集的划分: X=df.drop(columns=['Loan_ID','Loan_Status']).values Y=df['Loan_Status'].values X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.2, random_state = 42)rfc_vs_dt-3.py hosted with ❤ by GitHub让我们一眼所划分的训练集和测试集: print('Shape of X_train=>',X_train.shape) print('Shape of X_test=>',X_test.shape) print('Shape of Y_train=>',Y_train.shape) print('Shape of Y_test=>',Y_test.shape)rfc_vs_dt-4.py hosted with ❤ by GitHubhttps://www.analyticsvidhya.com/blog/2019/08/11-important-model-evaluation-error-metrics/?utm_source=blog&utm_medium=decision-tree-vs-random-forest-algorithm 让我们来评价F1-Score模型的表现:为什么我们的随机森林模型比决策树表现更好? 随机森林利用了多棵决策树的优势。它的确不依赖于单一决策树的特征重要性。让我们来看一看不同算法给予不同特征的特征重要性。feature_importance=pd.DataFrame({ 'rfc':rfc.feature_importances_, 'dt':dt.feature_importances_ },index=df.drop(columns=['Loan_ID','Loan_Status']).columns) feature_importance.sort_values(by='rfc',ascending=True,inplace=True)index = np.arange(len(feature_importance)) fig, ax = plt.subplots(figsize=(18,8)) rfc_feature=ax.barh(index,feature_importance['rfc'],0.4,color='purple',label='Random Forest') dt_feature=ax.barh(index+0.4,feature_importance['dt'],0.4,color='lightgreen',label='Decision Tree') ax.set(yticks=index+0.4,yticklabels=feature_importance.index)ax.legend() plt.show()rfc_vs_dt-10.py hosted with ❤ by GitHubhttps://scikit-learn.org/stable/modules/generated/sklearn.ensemble.BaggingClassifier.html#sklearn.ensemble.BaggingClassifier 因此,随机森林可以更好地在数据中心进行泛化。随机化特征选择可以使得随机森林比决策树更准确。所以你应该选择哪一种算法呢——决策树还是随机森林?“随机森林适用于拥有大型数据集的情况,并且可解释性不是主要考虑因素。”决策树更容易解释和理解。因为随机森林整合了多棵决策树,更难以解释。但是好消息是——解释随机森林也并非不可能。这里有一篇文章讲了如何解释随机森林模型的结果:https://www.analyticsvidhya.com/blog/2019/08/decoding-black-box-step-by-step-guide-interpretable-machine-learning-models-python/?utm_source=blog&utm_medium=decision-tree-vs-random-forest-algorithm 并且,随机森林比起单一决策树需要更长的训练时间。你应该把此纳入考虑,因为随着决策树数量的增加,所需要的训练时间也会越长。在你面临着紧张的机器学习项目安排过程中这可能通常是至关重要的。但是我要说的是——尽管结果不稳定,且依赖于特定的特征集,决策树真的很有帮助,因为他们更容易去解释、训练更快。任何对数据科学缺乏知识的人都可以使用决策树进行快速的数据驱动决策。写在最后的话了解决策树和随机森林之争是非常有必要的。在你初入机器学习领域时,这可能是一个很棘手的问题,但是本文能够为你阐明两者之间的异同。原文标题: Decision Tree vs. Random Forest – Which Algorithm Should you Use? 原文链接: https://www.analyticsvidhya.com/blog/2020/05/decision-tree-vs-random-forest-algorithm/ |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |